package GUI;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.Border;
import javax.swing.table.AbstractTableModel;
/**
 *
 * @author kayman
 */
public class Resultado implements ItemListener{
    
      private JPanel principal,datos,tabla;
      private JTextField empresaTxt,direccionTxt,contactoTxt,telefonoTxt,conexionesTxt,realizadaXTxt,nextPTxt,pre1Txt;
      private MyTableModel resultado;
      private Datos data;
      private JComboBox res;
      
    public Resultado(Datos data){
      this.data=data;
      crearPanel();
      } 
      
    public JPanel getPanel(){
         if(principal==null){
                principal= new JPanel();
              return principal;
          }else
          return principal;
      }
      
    private void crearPanel(){
       
        principal = new JPanel();
        principal.setLayout(new GridLayout(2,1,0,0));
        principal.setBackground(Color.WHITE);
        
        datos = new JPanel();
        datos.setLayout(new GridLayout(9,2,0,0));
        crearPanelDatos(datos);
        principal.add(datos);
        
        tabla = new JPanel();
        tabla.setLayout(new GridLayout(1,1,0,0));
        crearPanelTabla(tabla);
        principal.add(tabla);
        
    
    
    }
    
    private void crearPanelDatos(JPanel panel){
        JLabel empresa,direccion,contacto,telefono, resultadoL,conexiones,realizadaX,nextP;
        JLabel pre1= new JLabel("<html>Ubicación del sistema/equipo:</html>");
        empresaTxt= new JTextField("");
        direccionTxt= new JTextField("");
        contactoTxt= new JTextField("");
        telefonoTxt= new JTextField("");
        conexionesTxt= new JTextField("");
        realizadaXTxt= new JTextField("");
        nextPTxt= new JTextField("");
        pre1Txt= new JTextField();
        
      
        empresa= new JLabel("Nombre de la empresa:");
        direccion= new JLabel("Direccón:");
        contacto= new JLabel("Contacto:");
        telefono= new JLabel("Telefono:");
        resultadoL= new JLabel("Resultado segun norma");
        conexiones = new JLabel("Conexiones:");
        realizadaX= new JLabel("Realizada por");
        nextP = new JLabel("Siguente prueba:");

        panel.setBackground(Color.WHITE);
         res = new JComboBox ();
        
        res.addItem("Europa BN EN 12021");
        res.addItem("EE.UU. 20 CFR 1910.134");
        res.addItem("Canada CSA Z180.1-00");
        res.addItem("Australia AS/NZS 1715:1994");
        
       panel.add(empresa);
       panel.add(empresaTxt);
       
       panel.add(direccion);
       panel.add(direccionTxt);
      
       panel.add(contacto);
       panel.add(contactoTxt);
       
       panel.add(telefono); 
       panel.add(telefonoTxt);
       
       panel.add(resultadoL);
       panel.add(res);
       
       panel.add(conexiones);
       panel.add(conexionesTxt);
       
       panel.add(realizadaX);
       panel.add(realizadaXTxt);
       
       panel.add(nextP);
       panel.add(nextPTxt);
       
       panel.add(pre1);
       panel.add(pre1Txt);
    
    }
    
    private void crearPanelTabla(JPanel panel){
        resultado= new MyTableModel();
        JTable tablaI= new JTable(resultado );
       
        Border border = BorderFactory.createEmptyBorder(0, 0, 0, 0);
        JScrollPane scrollPane = new JScrollPane(tablaI);
        scrollPane.setBorder(border);
        
        panel.setBackground(Color.WHITE);
        panel.setLayout(new BorderLayout());
        panel.add(scrollPane, BorderLayout.CENTER); 
        panel.setBorder(border);
        
        JPanel resp= new JPanel();
        crearPanelResponsable(resp);
        panel.add(resp,BorderLayout.SOUTH);
        //res.addActionListener(this);
        res.addItemListener(this);
        
    
    }
    
    private void crearPanelResponsable(JPanel panel){
        JLabel elaboro= new JLabel("<html>-------------------------------<br/>Elaboro Prueba</html>");
        JLabel recibio = new JLabel ("<html>-----------------------------<br/>Recibio Prueba</html>");   
        panel.add(elaboro);
        panel.add(recibio);
         
    }

   // @Override
    public void actionPerformed(ActionEvent e) {
        
        
    }
    
    public void itemStateChanged(ItemEvent e){
        if(e.getSource().getClass()==JComboBox.class && e.getStateChange()==ItemEvent.SELECTED){
            JComboBox cb = (JComboBox) e.getSource();
            String st=(String)cb.getSelectedItem();
            procesar(st);   
            System.out.println("Holas desc ombo box");
        }
        
    }
    
    private void procesar(String norma){
    
        if(norma.compareTo("Europa BN EN 12021")==0){
            System.out.println("Norma seleccionada\t"+ norma);
            normaEuropea();
            
        }else if(norma.compareTo("EE.UU. 20 CFR 1910.134")==0){
            System.out.println("Norma seleccionada\t"+ norma);
            normaEEUU();
           
        }else if(norma.compareTo("Canada CSA Z180.1-00")==0){
            System.out.println("Norma seleccionada\t"+ norma);
            normaCanada();
           
        }else if(norma.compareTo("Australia AS/NZS 1715:1994")==0){
            System.out.println("Norma seleccionada\t"+ norma);
            normaAutralia();
           
        }
    
    }
    
    private void normaEuropea(){
       float[] i;
        try{
        i=getValores();
        
        }catch(Exception e){
            System.out.println("Llego una excepcion");
         return;
        }
    System.out.println("Si llegue");
    
       if(i[0]<=15)
    resultado.setValueAt("Aprobado", 0, 1);
       else
           resultado.setValueAt("No Aprobo", 0, 1);
       
       if(i[1]<=500)
    resultado.setValueAt("Aprobado", 1, 1);
       else
           resultado.setValueAt("No Aprobo", 1, 1);
       
       if(i[2]<=(-11))
    resultado.setValueAt("Aprobado", 2, 1);
       else
           resultado.setValueAt("No Aprobo", 2, 1);
       if(i[3]<=0.5)
    resultado.setValueAt("Aprobado", 3, 1);
       else
           resultado.setValueAt("No Aprobo", 3, 1);
    
       if(i[4]<=22)
    resultado.setValueAt("Aprobado", 4, 1);
       else
           resultado.setValueAt("No Aprobo", 4, 1);
    }
    
    private void normaEEUU(){
        float[] i;
        try{
        i=getValores();
        
        }catch(Exception e){
            System.out.println("Llego una excepcion");
         return;
        }
    System.out.println("Si llegue");
    
       if(i[0]<=15)
    resultado.setValueAt("Aprobado", 0, 1);
       else
           resultado.setValueAt("No Aprobo", 0, 1);
       
       if(i[1]<=500)
    resultado.setValueAt("Aprobado", 1, 1);
       else
           resultado.setValueAt("No Aprobo", 1, 1);
       
       if(i[2]<=(-11))
    resultado.setValueAt("Aprobado", 2, 1);
       else
           resultado.setValueAt("No Aprobo", 2, 1);
       if(i[3]<=0.5)
    resultado.setValueAt("Aprobado", 3, 1);
       else
           resultado.setValueAt("No Aprobo", 3, 1);
    
       if(i[4]<=22)
    resultado.setValueAt("Aprobado", 4, 1);
       else
           resultado.setValueAt("No Aprobo", 4, 1);
    }
    
    private void normaCanada(){
    float[] i;
        try{
        i=getValores();
        
        }catch(Exception e){
            System.out.println("Llego una excepcion");
         return;
        }
    System.out.println("Si llegue");
    
       if(i[0]<=15)
    resultado.setValueAt("Aprobado", 0, 1);
       else
           resultado.setValueAt("No Aprobo", 0, 1);
       
       if(i[1]<=500)
    resultado.setValueAt("Aprobado", 1, 1);
       else
           resultado.setValueAt("No Aprobo", 1, 1);
       
       if(i[2]<=(-11))
    resultado.setValueAt("Aprobado", 2, 1);
       else
           resultado.setValueAt("No Aprobo", 2, 1);
       if(i[3]<=0.5)
    resultado.setValueAt("Aprobado", 3, 1);
       else
           resultado.setValueAt("No Aprobo", 3, 1);
    
       if(i[4]<=22)
    resultado.setValueAt("Aprobado", 4, 1);
       else
           resultado.setValueAt("No Aprobo", 4, 1);
    }
    
    private void normaAutralia(){
    float[] i;
        try{
        i=getValores();
        
        }catch(Exception e){
            System.out.println("Llego una excepcion");
         return;
        }
    System.out.println("Si llegue");
    
       if(i[0]<=15)
    resultado.setValueAt("Aprobado", 0, 1);
       else
           resultado.setValueAt("No Aprobo", 0, 1);
       
       if(i[1]<=500)
    resultado.setValueAt("Aprobado", 1, 1);
       else
           resultado.setValueAt("No Aprobo", 1, 1);
       
       if(i[2]<=(-11))
    resultado.setValueAt("Aprobado", 2, 1);
       else
           resultado.setValueAt("No Aprobo", 2, 1);
       if(i[3]<=0.5)
    resultado.setValueAt("Aprobado", 3, 1);
       else
           resultado.setValueAt("No Aprobo", 3, 1);
    
       if(i[4]<=22)
    resultado.setValueAt("Aprobado", 4, 1);
       else
           resultado.setValueAt("No Aprobo", 4, 1);
    }
    
    public float[] getValores() throws Exception{
        float[] array= new float[5];
        try{
         array[0]=Float.parseFloat((String)data.valores.getValueAt(0, 4));
        }catch(NumberFormatException e){
            JOptionPane.showMessageDialog(null,  "Valor NO aceptado en " + data.valores.getValueAt(0,0), "Error" ,JOptionPane.ERROR_MESSAGE);
            throw  new Exception()  ;
         }
        try{
         array[1]=Float.parseFloat((String)data.valores.getValueAt(1, 4));
        }catch(NumberFormatException e){
            JOptionPane.showMessageDialog(null,  "Valor NO aceptado en " + data.valores.getValueAt(1,0), "Error" ,JOptionPane.ERROR_MESSAGE);
            throw  new Exception()  ;
         }
        try{
         array[2]=Float.parseFloat((String)data.valores.getValueAt(2, 4));
        }catch(NumberFormatException e){
            JOptionPane.showMessageDialog(null,  "Valor NO aceptado en " + data.valores.getValueAt(2,0), "Error" ,JOptionPane.ERROR_MESSAGE);
            throw  new Exception()  ;
         }
        try{
         array[3]=Float.parseFloat((String)data.valores.getValueAt(3, 4));
        }catch(NumberFormatException e){
            JOptionPane.showMessageDialog(null,  "Valor NO aceptado en " + data.valores.getValueAt(3,0), "Error" ,JOptionPane.ERROR_MESSAGE);
            throw  new Exception()  ;
         }
        try{
         array[4]=Float.parseFloat((String)data.valores.getValueAt(4, 4));
        }catch(NumberFormatException e){
            JOptionPane.showMessageDialog(null,  "Valor NO aceptado en " + data.valores.getValueAt(4,0), "Error" ,JOptionPane.ERROR_MESSAGE);
            throw  new Exception()  ;
        }
        return array;
    }
    
    class MyTableModel extends AbstractTableModel {
        private boolean DEBUG = false;
         
        
        String[] columnNames={"Prueba","Resultado"};
        Object[][] data={{"Presión del sistema",""},
            {"Temperatura ambiente",""},
            {"Monóxido de carbono",""},
            {"Dióxido de carbono",""},
            {"Aceite",""},
            {"02",""},
            {"Agua",""},
            {"(98-200 mg)",""},
            {"(50-200 mg)",""},
            {"Punto de rocío a presión",""}};
        
        public int getColumnCount() {
            return columnNames.length;
        }
 
        public int getRowCount() {
            return data.length;
        }
 
        public String getColumnName(int col) {
            return columnNames[col];
        }
 
        public Object getValueAt(int row, int col) {
            return data[row][col];
        }
 
        /*
         * JTable uses this method to determine the default renderer/
         * editor for each cell.  If we didn't implement this method,
         * then the last column would contain text ("true"/"false"),
         * rather than a check box.
         */
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
 
        /*
         * Don't need to implement this method unless your table's
         * editable.
         */
        public boolean isCellEditable(int row, int col) {
            //Note that the data/cell address is constant,
            //no matter where the cell appears onscreen.
            if (col < 3 ) {
                return false;
            } else {
                return true;
            }
        }
 
        /*
         * Don't need to implement this method unless your table's
         * data can change.
         */
        public void setValueAt(Object value, int row, int col) {
            if (DEBUG) {
                System.out.println("Setting value at " + row + "," + col
                                   + " to " + value
                                   + " (an instance of "
                                   + value.getClass() + ")");
            }
 
            data[row][col] = value;
            fireTableCellUpdated(row, col);
 
            if (DEBUG) {
                System.out.println("New value of data:");
                printDebugData();
            }
        }
            
            private void printDebugData() {
            int numRows = getRowCount();
            int numCols = getColumnCount();
 
            for (int i=0; i < numRows; i++) {
                System.out.print("    row " + i + ":");
                for (int j=0; j < numCols; j++) {
                    System.out.print("  " + data[i][j]);
                }
                System.out.println();
            }
            System.out.println("--------------------------");
        }
}
    
}

